#ifndef MIRAGON_EVENTLOOP_IMPL_HPP
#define MIRAGON_EVENTLOOP_IMPL_HPP

#include <miragon/eventloop.hpp>
#include <boost/asio.hpp>

namespace miragon
{

class EventLoopImpl : public EventLoop
{
public:
    EventLoopImpl();
    virtual ~EventLoopImpl(void);

    virtual void Quit(void) override;
    virtual int Run(void) override;

    virtual void DelayedTask(uint32_t ms, DelayedTaskFun task) override;
    virtual void PostEvent(void) override;

private:
    boost::asio::io_context mIOContext;
};

} // namespace miragon

#endif // MIRAGON_EVENTLOOP_IMPL_HPP
